package com.company.demo02UDP;

import java.net.DatagramPacket;
import java.net.DatagramSocket;

public class UDPServer {
    public static void main(String[] args) {
        try (DatagramSocket socket = new DatagramSocket(8080)){ // 1. 创建服务器端对象
            // 2. 创建用于接收数据的数据包
            byte[] buffer = new byte[1024*64]; // UDP协议中的最大数据包大小为 64KB
            DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
            while (true) { // 循环接收数据
                // 3. 接收客户端发送过来的数据，会阻塞等待，直到有数据发送过来
                socket.receive(packet);
                // 4. 获取数据包中的数据
                byte[] data = packet.getData();
                // 5. 将实际接收到的数据转为字符串并输出
                String str = new String(data, 0, packet.getLength());
                System.out.println("服务器端接收到数据：" + str);
                // 6. 查看发送端的IP地址和端口号
                System.out.println("发送端的IP地址：" + packet.getAddress().getHostAddress() + "，端口号：" + packet.getPort());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
